package affichage;


import deroulementjeu.TypeEquipe;
import regles.TypeScenario;
import unite.TypeCombat;


/**
 * Classe qui initialise les règles de la partie en fonction des choix de
 * l'utilisateur dans la fenêtre de dialog Dialog
 * @author Alexis BRASY, Geoffrey LEQUESNE, Sandrine PIRIOU, Michel POPOV
 *
 */
public class DialogInfo {

	/** La Type de combat */
    private TypeCombat modeCombat = TypeCombat.MORT;
    /** Le mode de scénario */
    private TypeScenario modeScenario = TypeScenario.GOTTAKILLTHEMALL;
    /** Les entiers qui régissent les règles de la partie */
    private int nbPotion = 2, regen = 2, xpMortel = 300, depPostMortem = 3;
    /** Le type de joueur de l'adversaire */
    private TypeEquipe ia = TypeEquipe.HUMAIN;
    /** Le niveau de jeu du joueur adverse (si c'est une IA) */
    private int iaNiveau = 1; 
	
    /**
     * Constructeur vide de la DialogInfo
     */
    public DialogInfo() {}
	
    /**
     * Constructeur de la DialogInfo avec 8 arguments
     * @param ms La chaîne de caractère représentant le mode de scénario
     * @param mc La chaîne de caractère représentant le mode de combat
     * @param nbpo La chaîne de caractère représentant le nombre de potions au départ
     * @param pvreg La chaîne de caractère représentant le nombre de PV gagnés lors de la régénération
     * @param xpmort La chaîne de caractère représentant le palier d'XP au delà duquel l'unité est considérée comme bientôt morte
     * @param depmort La chaîne de caractère représentant le nombre de déplacement d'une unité presque morte
     * @param iam La chaîne de caractère représentant le type de joueur de l'adversaire
     * @param ianiv La chaîne de caractère représentant le niveau de l'ordinateur (si IA)
     */
    public DialogInfo(String ms, String mc, String nbpo, String pvreg, String xpmort, String depmort, String iam, String ianiv) {

        if (mc.equals("A MORT")) {
            this.modeCombat = TypeCombat.MORT;
        } else {
            this.modeCombat = TypeCombat.ASSAUT;
        }	

        if (ms.equals("KILL ALL")) {
            this.modeScenario = TypeScenario.GOTTAKILLTHEMALL;
        } else {
            this.modeScenario = TypeScenario.GOTTAKILLTHEMALL;
        }
		
        if (iam.equals("HUMAIN")) {
            this.ia = TypeEquipe.HUMAIN;
        } else {
            this.ia = TypeEquipe.ORDINATEUR;
        }
		
        this.nbPotion = Integer.parseInt(nbpo);
        this.regen = Integer.parseInt(pvreg);
        this.xpMortel = Integer.parseInt(xpmort);
        this.depPostMortem = Integer.parseInt(depmort);
		
        if (ianiv.equals("FACILE")) {
            this.iaNiveau = 1;
        }			
        if (ianiv.equals("NORMALE")) {
            this.iaNiveau = 2;
        }
        if (ianiv.equals("DIFFICILE")) {
            this.iaNiveau = 3;
        }	
    }
	
    /**
     * Getter du type de joueur de l'adversaire
     * @return le type d'équipe
     */
    public TypeEquipe getIa() {
        return ia;
    }

    /**
     * Setter du type de joueur de l'adversaire
     * @param ia le type d'équipe
     */
    public void setIa(TypeEquipe ia) {
        this.ia = ia;
    }

    /**
     * Getter du type de combat
     * @return le type de combat
     */
    public TypeCombat getModeCombat() {
        return modeCombat;
    }

    /**
     * Setter du type de combat
     * @param modeCombat le mode de combat
     */
    public void setModeCombat(TypeCombat modeCombat) {
        this.modeCombat = modeCombat;
    }

    /**
     * Getter du type de scénario
     * @return le type de scénario
     */
    public TypeScenario getModeScenario() {
        return modeScenario;
    }

    /**
     * Setter du type de scénario
     * @param modeScenario le type de scénario
     */
    public void setModeScenario(TypeScenario modeScenario) {
        this.modeScenario = modeScenario;
    }

    /**
     * Getter du nombre de potions
     * @return le nombre de potions
     */
    public int getNbPotion() {
        return nbPotion;
    }

    /**
     * Setter du nombre de potions
     * @param nbPotion
     */
    public void setNbPotion(int nbPotion) {
        this.nbPotion = nbPotion;
    }

    /**
     * Getter du nombre de PV regen
     * @return le nombre de PV regen
     */
    public int getRegen() {
        return regen;
    }

    /**
     * Setter du nombre de PV regen
     * @param regen le nombre de PV regen
     */
    public void setRegen(int regen) {
        this.regen = regen;
    }

    /**
     * Getter du palier d'XP mortel
     * @return le palier d'XP mortel
     */
    public int getXpMortel() {
        return xpMortel;
    }

    /**
     * Setter du palier d'XP mortel
     * @param xpMortel
     */
    public void setXpMortel(int xpMortel) {
        this.xpMortel = xpMortel;
    }

    /**
     * Getter du déplacement préMortem
     * @return le déplacement préMortem
     */
    public int getDepPostMortem() {
        return depPostMortem;
    }

    /**
     * Setter du déplacement préMortem
     * @param depPostMortem
     */
    public void setDepPostMortem(int depPostMortem) {
        this.depPostMortem = depPostMortem;
    }
    
    /**
     * Getter du niveau de l'IA
     * @return le niveau de l'IA
     */
    public int getIaNiveau() {
        return iaNiveau;
    }

    /**
     * Setter du niveau de l'IA
     * @param iaNiveau le niveau de l'IA
     */
    public void setIaNiveau(int iaNiveau) {
        this.iaNiveau = iaNiveau;
    }

    
    /**
     * Renvoie la chaîne de caractères contenant tous les choix de l'utilisateur
     * @return String la chaînes de caractères
     */
    public String toString() {
        String str;

        if (this.modeCombat != TypeCombat.MORT
                || this.modeScenario != TypeScenario.GOTTAKILLTHEMALL
                || this.nbPotion != 0 || this.regen != 0 || this.xpMortel != -1
                || this.depPostMortem != 1 || this.ia != TypeEquipe.HUMAIN) {
            str = "";
            str += "modeCombat : " + this.modeCombat + "\n";
            str += "modeScenario : " + this.modeScenario + "\n";
            str += "nbPotion : " + this.nbPotion + "\n";
            str += "regen : " + this.regen + "\n";
            str += "xpMortel : " + this.xpMortel + "\n";
            str += "depPostMortem : " + this.depPostMortem + "\n";
            str += "IA : " + this.ia + "\n";
            str += "IA niveau: " + this.iaNiveau + "\n";
			
        } else {
            str = "";
            str += "VALEUR PAR DEFAUT " + "\n";
            str += "modeCombat : " + this.modeCombat + "\n";
            str += "modeScenario : " + this.modeScenario + "\n";
            str += "nbPotion : " + this.nbPotion + "\n";
            str += "regen : " + this.regen + "\n";
            str += "xpMortel : " + this.xpMortel + "\n";
            str += "depPostMortem : " + this.depPostMortem + "\n";
            str += "IA : " + this.ia + "\n";
            str += "IA niveau: " + this.iaNiveau + "\n";
        }
        return str;
    }

}
